<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>File Object</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../css/default.css" rel="stylesheet" type="text/css">
</head>
<body>

<h1>文件对象 <span class="ver">[AHK_L 42+]</span></h1>

<p>为文件流输入/输出提供接口. <a href="../commands/FileOpen.htm">FileOpen</a> 返回文件类型的对象.</p>

<div class="methodShort" id="Read"><h2>Read</h2>
<p>从文件读取字符串并使文件指针向前移动.</p>
<pre class="Syntax">String := File.Read([Characters])</pre>
<table class="info">
  <tr><td width="15%">Characters</td><td width="85%">需要读取的字符的最大数目. 如果省略, 则读取文件的剩余部分并作为单个字符串返回.</td></tr>
  <tr><td><b>返回值</b></td><td>一个字符串.</td></tr>
</table></div>

<div class="methodShort" id="Write"><h2>Write</h2>
<p>写入字符串到文件并使文件指针向前移动.</p>
<pre class="Syntax">File.Write(String)</pre>
<table class="info">
  <tr><td width="15%">String</td><td width="85%">一个字符串.</td></tr>
  <tr><td><b>返回值</b></td><td>写入的字节数 (不是字符数). </td></tr>
</table></div>

<div class="methodShort" id="ReadLine"><h2>ReadLine</h2>
<p>从文件中读取一行文本并使文件指针向前移动.</p>
<pre class="Syntax">Line := File.ReadLine()</pre>
<table class="info">
  <tr><td width="15%"><b>返回值</b></td><td width="85%">一行文本. 其中可能包括 <code>`n</code>, <code>`r`n</code> 或 <code>`r</code> , 取决于文件和打开文件时使用的 EOL 标志.</td></tr>
</table></div>

<div class="methodShort" id="WriteLine"><h2>WriteLine</h2>
<p>写入字符串后面跟着 <code>`n</code> 或 <code>`r`n</code> 根据打开文件时使用的标志. 使文件指针向前移动.</p>
<pre class="Syntax">File.WriteLine([String])</pre>
<table class="info">
  <tr><td width="15%">String</td><td width="85%">可选的字符串.</td></tr>
  <tr><td><b>返回值</b></td><td>写入的字节数 (不是字符数). </td></tr>
</table></div>

<div class="methodShort" id="ReadNum"><h2>Read<i>Num</i></h2>
<p>从文件中读取一个数字并使文件指针向前移动.</p>
<pre class="Syntax">Num := File.Read<i>NumType</i>()</pre>
<table class="info">
  <tr><td width="15%"><i>NumType</i></td><td width="85%">指定下列各项的其中一个直接作为函数名称的一部分:<br>UInt, Int, Int64, Short, UShort, Char, UChar, Double, or Float.</td></tr>
  <tr><td><b>返回值</b></td><td>数字.</td></tr>
</table></div>

<div class="methodShort" id="WriteNum"><h2>Write<i>Num</i></h2>
<p>写入数字到文件并使文件指针向前移动.</p>
<pre class="Syntax">File.Write<i>NumType</i>(Num)</pre>
<table class="info">
  <tr><td width="15%"><i>NumType</i></td><td width="85%">指定下列各项的其中一个直接作为函数名称的一部分:<br>UInt, Int, Int64, Short, UShort, Char, UChar, Double, or Float.</td></tr>
  <tr><td>Num</td><td>一个数字.</td></tr>
  <tr><td><b>返回值</b></td><td>写入的字节数. 例如, 成功时 WriteUInt 返回 4.</td></tr>
</table></div>

<div class="methodShort" id="RawRead"><h2>RawRead</h2>
<p>从文件读取原始的二进制数据到内存. 如果指定了变量, 必要时会自动扩展.</p>
<pre class="Syntax">File.RawRead(VarOrAddress, Bytes)</pre>
<table class="info">
  <tr><td width="15%">VarOrAddress</td><td width="85%">将要从中复制数据的变量或内存地址. 用法类似于 <a href="../Functions.htm#NumGet">NumGet</a>.</td></tr>
  <tr><td>Bytes</td><td>需读取的最大字节数.</td></tr>
  <tr><td><b>返回值</b></td><td>读取的字节数.</td></tr>
</table></div>

<div class="methodShort" id="RawWrite"><h2>RawWrite</h2>
<p>写入原始的二进制数据到文件.</p>
<pre class="Syntax">File.RawWrite(VarOrAddress, Bytes)</pre>
<table class="info">
  <tr><td width="15%">VarOrAddress</td><td width="85%">包含数据的变量或内存中的数据地址. 用法类似于 <a href="../Functions.htm#NumPut">NumPut</a>.</td></tr>
  <tr><td>Bytes</td><td>需写入的字节数.</td></tr>
  <tr><td><b>返回值</b></td><td>写入的字节数.</td></tr>
</table></div>

<div class="methodShort" id="Seek"><h2>Seek</h2>
<p>移动文件指针.</p>
<pre class="Syntax">File.Seek(Distance [, Origin = 0])
File.Position := Distance
File.Pos := Distance</pre>
<table class="info">
  <tr><td width="15%">Distance</td><td width="85%">需移动的距离, 单位为字节. 较小的值更接近文件的开始处.</td></tr>
  <tr><td>Origin</td><td>文件指针开始移动的起点. 必须为下列值的其中一个:<ul>
      <li>0 (SEEK_SET): 文件的开始处. <i>Distance</i> 必须为零或更大.</li>
      <li>1 (SEEK_CUR): 文件指针的当前位置.</li>
      <li>2 (SEEK_END): 文件的末尾. <i>Distance</i> 通常应该为负数.</li>
    </ul>如果省略, 当 Distance 为负数时 <i>Origin</i> 为 SEEK_END 而其他情况为 SEEK_SET.</td></tr>
  <tr><td><b>返回值</b></td><td>成功时为非零值, 否则为零. </td></tr>
</table></div>

<div class="methodShort" id="Tell"><h2>Tell</h2>
<pre class="Syntax">Pos := File.Tell()
Pos := File.Position
Pos := File.Pos</pre>
<table class="info">
  <tr><td width="15%"><b>返回值</b></td><td width="85%">文件指针的当前位置, 文件的开始处为 0.</td></tr>
</table></div>

<div class="methodShort" id="Length"><h2>Length</h2>
<p>获取或设置文件的大小.</p>
<pre class="Syntax">FileSize := File.Length
File.Length := NewSize</pre>
<table class="info">
  <tr><td width="15%">NewSize</td><td width="85%">文件的新大小, 单位为字节.</td></tr>
  <tr><td><b>返回值</b></td><td>文件的大小, 单位为字节.</td></tr>
</table></div>

<div class="methodShort" id="AtEOF"><h2>AtEOF</h2>
<pre class="Syntax">IsAtEOF := File.AtEOF</pre>
<table class="info">
  <tr><td width="15%"><b>返回值</b></td><td width="85%">如果文件指针到达文件的末尾时为非零值, 否则为零.</td></tr>
</table></div>

<div class="methodShort" id="Close"><h2>Close</h2>
<p>关闭文件, 把缓冲区的数据写入磁盘并释放共享锁定. 尽管当对象释放时文件自动关闭, 但建议尽快关闭文件.</p>
<pre class="Syntax">File.Close()</pre>
<p><i>没有参数或返回值.</i></p></div>

<div class="methodShort" id="Encoding"><h2>编码</h2>
<p>获取或设置此文件对象使用的编码. 为了得到可靠结果调用者在设置此属性后可能需要 <a href="#Seek">Seek</a>.</p>
<pre class="Syntax">Encoding := File.Encoding
File.Encoding := Encoding</pre>
<table class="info">
  <tr><td width="15%"><b>返回值</b></td><td width="85%">一个 <a href="../commands/FileEncoding.htm">FileEncoding</a> 接受的格式的字符串.</td></tr>
</table></div>

<div class="methodShort" id="__Handle"><h2>__Handle</h2>
<pre class="Syntax">File.__Handle</pre>
<table class="info">
  <tr><td width="15%"><b>返回值</b></td><td width="85%">与 DllCall 一起使用的系统文件句柄. 参见 <a href="http://msdn.microsoft.com/en-us/library/aa363858.aspx">CreateFile</a>.</td></tr>
</table></div>

</body>
</html>
